home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / plan / src / parser.lex < prev    next >
Text File  |  1994-08-01  |  3KB  |  87 lines

  1. %{
  2. #include "y.tab.h"
  3. #include "string.h"
  4. #undef yywrap
  5. yywrap() { return(1); }
  6. extern char *mystrdup();
  7. %}
  8.  
  9. %%
  10.  
  11. #.*\n                ;
  12. :.*\n                ;
  13. [ \t\n]                ;
  14. [-+*/%.]            { return(*yytext); }
  15.  
  16. january                { yylval.ival =   1; return(MONTH); }
  17. february            { yylval.ival =   2; return(MONTH); }
  18. march                { yylval.ival =   3; return(MONTH); }
  19. april                { yylval.ival =   4; return(MONTH); }
  20. may                { yylval.ival =   5; return(MONTH); }
  21. june                { yylval.ival =   6; return(MONTH); }
  22. july                { yylval.ival =   7; return(MONTH); }
  23. august                { yylval.ival =   8; return(MONTH); }
  24. september            { yylval.ival =   9; return(MONTH); }
  25. october                { yylval.ival =  10; return(MONTH); }
  26. november            { yylval.ival =  11; return(MONTH); }
  27. december            { yylval.ival =  12; return(MONTH); }
  28.  
  29. monday                { yylval.ival =   1; return(WDAY); }
  30. tuesday                { yylval.ival =   2; return(WDAY); }
  31. wednesday            { yylval.ival =   3; return(WDAY); }
  32. thursday            { yylval.ival =   4; return(WDAY); }
  33. friday                { yylval.ival =   5; return(WDAY); }
  34. saturday            { yylval.ival =   6; return(WDAY); }
  35. sunday                { yylval.ival =   7; return(WDAY); }
  36.  
  37. 1st|first            { yylval.ival =   1; return(NUMBER); }
  38. 2nd|second            { yylval.ival =   2; return(NUMBER); }
  39. 3rd|third            { yylval.ival =   3; return(NUMBER); }
  40. 4th|fourth            { yylval.ival =   4; return(NUMBER); }
  41. 5th|fifth            { yylval.ival =   5; return(NUMBER); }
  42. last                { yylval.ival = 999; return(NUMBER); }
  43. any                { yylval.ival =   0; return(NUMBER); }
  44.  
  45. before                { yylval.ival =  -1; return(NUMBER); }
  46. after                { yylval.ival =  -2; return(NUMBER); }
  47.  
  48. [0-9]+                { yylval.ival = atoi(yytext); return(NUMBER); }
  49.  
  50. \"[^"]*\"            { yylval.sval = mystrdup(yytext+1);
  51.                   yylval.sval[strlen(yylval.sval)-1] = 0;
  52.                   return(STRING); }
  53.  
  54. every                ;
  55. day                ;
  56. days                ;
  57. on                ;
  58. in                { return(IN);    }
  59. plus                { return(PLUS);  }
  60. minus                { return(MINUS); }
  61. small                { return(SMALL); }
  62. year                { return(CYEAR);  }
  63. leapyear            { return(LEAPYEAR); }
  64. easter                { return(EASTER); }
  65. length                { return(LENGTH); }
  66.  
  67. black                { yylval.ival = 1; return(COLOR); }
  68. red                { yylval.ival = 2; return(COLOR); }
  69. green                { yylval.ival = 3; return(COLOR); }
  70. yellow                { yylval.ival = 4; return(COLOR); }
  71. blue                { yylval.ival = 5; return(COLOR); }
  72. magenta                { yylval.ival = 6; return(COLOR); }
  73. cyan                { yylval.ival = 7; return(COLOR); }
  74. white                { yylval.ival = 8; return(COLOR); }
  75. weekend                { yylval.ival = 9; return(COLOR); }
  76.  
  77. "=="                { return(EQ); }
  78. "!="                { return(NE); }
  79. "<="                { return(LE); }
  80. ">="                { return(GE); }
  81. "<"                { return(LT); }
  82. ">"                { return(GT); }
  83. "&&"                { return(AND);}
  84. "||"                { return(OR); }
  85.  
  86. %%
  87.